home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1993 April: Penguin on DISC / ADC Developer CD (1993-04) (''Penguin On DISC'')_iso / Dev.CD Apr 93.iso / Utilities / MPW Interfaces 7.1 Beta / PInterfaces / Memory.p < prev    next >
Encoding:
Text File  |  1992-08-28  |  7.0 KB  |  251 lines  |  [TEXT/MPS ]

  1.  
  2. {
  3. Created: Sunday, September 15, 1991 at 11:25 PM
  4.  Memory.p
  5.  Pascal Interface to the Macintosh Libraries
  6.  
  7.   Copyright Apple Computer, Inc. 1985-1991
  8.   All rights reserved
  9. }
  10.  
  11.  
  12. {$IFC UNDEFINED UsingIncludes}
  13. {$SETC UsingIncludes := 0}
  14. {$ENDC}
  15.  
  16. {$IFC NOT UsingIncludes}
  17.  UNIT Memory;
  18.  INTERFACE
  19. {$ENDC}
  20.  
  21. {$IFC UNDEFINED UsingMemory}
  22. {$SETC UsingMemory := 1}
  23.  
  24. {$I+}
  25. {$SETC MemoryIncludes := UsingIncludes}
  26. {$SETC UsingIncludes := 1}
  27. {$IFC UNDEFINED UsingTypes}
  28. {$I $$Shell(PInterfaces)Types.p}
  29. {$ENDC}
  30. {$SETC UsingIncludes := MemoryIncludes}
  31.  
  32. CONST
  33. maxSize = $800000;    {Max data block size is 8 megabytes}
  34. defaultPhysicalEntryCount = 8;
  35.  
  36. { values returned from the GetPageState function }
  37. kPageInMemory = 0;
  38. kPageOnDisk = 1;
  39. kNotPaged = 2;
  40.  
  41. TYPE
  42. Size = LONGINT;        { size of a block in bytes }
  43.  
  44. THz = ^Zone;
  45. Zone = RECORD
  46.  bkLim: Ptr;
  47.  purgePtr: Ptr;
  48.  hFstFree: Ptr;
  49.  zcbFree: LONGINT;
  50.  gzProc: ProcPtr;
  51.  moreMast: INTEGER;
  52.  flags: INTEGER;
  53.  cntRel: INTEGER;
  54.  maxRel: INTEGER;
  55.  cntNRel: INTEGER;
  56.  maxNRel: INTEGER;
  57.  cntEmpty: INTEGER;
  58.  cntHandles: INTEGER;
  59.  minCBFree: LONGINT;
  60.  purgeProc: ProcPtr;
  61.  sparePtr: Ptr;
  62.  allocPtr: Ptr;
  63.  heapData: INTEGER;
  64.  END;
  65.  
  66. MemoryBlock = RECORD
  67.  address: Ptr;
  68.  count: LONGINT;
  69.  END;
  70.  
  71. LogicalToPhysicalTable = RECORD
  72.  logical: MemoryBlock;
  73.  physical: ARRAY [0..defaultPhysicalEntryCount - 1] OF MemoryBlock;
  74.  END;
  75.  
  76.  
  77. PageState = INTEGER;
  78. StatusRegisterContents = INTEGER;
  79.  
  80. FUNCTION GetApplLimit: Ptr;
  81.  INLINE $2EB8,$0130;
  82. FUNCTION GetZone: THz;
  83.  INLINE $A11A,$2E88;
  84. FUNCTION SystemZone: THz;
  85.  INLINE $2EB8,$02A6;
  86. FUNCTION ApplicZone: THz;
  87.  INLINE $2EB8,$02AA;
  88. FUNCTION ApplicationZone: THz;
  89.  INLINE $2EB8,$02AA;
  90. FUNCTION NewHandle(byteCount: Size): Handle;
  91. FUNCTION NewHandleSys(byteCount: Size): Handle;
  92. FUNCTION NewHandleClear(byteCount: Size): Handle;
  93. FUNCTION NewHandleSysClear(byteCount: Size): Handle;
  94. FUNCTION HandleZone(h: Handle): THz;
  95. FUNCTION RecoverHandle(p: Ptr): Handle;
  96. FUNCTION NewPtr(byteCount: Size): Ptr;
  97. FUNCTION NewPtrSys(byteCount: Size): Ptr;
  98. FUNCTION NewPtrClear(byteCount: Size): Ptr;
  99. FUNCTION NewPtrSysClear(byteCount: Size): Ptr;
  100. FUNCTION PtrZone(p: Ptr): THz;
  101. FUNCTION GZSaveHnd: Handle;
  102.  INLINE $2EB8,$0328;
  103. FUNCTION TopMem: Ptr;
  104.  INLINE $2EB8,$0108;
  105. FUNCTION MaxBlock: LONGINT;
  106. FUNCTION MaxBlockSys: LONGINT;
  107. FUNCTION StackSpace: LONGINT;
  108. FUNCTION NewEmptyHandle: Handle;
  109. FUNCTION NewEmptyHandleSys: Handle;
  110. PROCEDURE HLock(h: Handle);
  111.  INLINE $205F,$A029;
  112. PROCEDURE HUnlock(h: Handle);
  113.  INLINE $205F,$A02A;
  114. PROCEDURE HPurge(h: Handle);
  115.  INLINE $205F,$A049;
  116. PROCEDURE HNoPurge(h: Handle);
  117.  INLINE $205F,$A04A;
  118. PROCEDURE HLockHi(h: Handle);
  119.  INLINE $205F,$A064,$A029;
  120. FUNCTION StripAddress(theAddress: UNIV Ptr): Ptr;
  121. {$IFC SystemSixOrLater }
  122.  INLINE $201F,$A055,$2E80;
  123. {$ENDC}
  124. FUNCTION Translate24To32(addr24: UNIV Ptr): Ptr;
  125.  INLINE $201F,$A091,$2E80;
  126. FUNCTION TempNewHandle(logicalSize: Size;VAR resultCode: OSErr): Handle;
  127.  INLINE $3F3C,$001D,$A88F;
  128. FUNCTION TempMaxMem(VAR grow: Size): Size;
  129.  INLINE $3F3C,$0015,$A88F;
  130. FUNCTION TempFreeMem: LONGINT;
  131.  INLINE $3F3C,$0018,$A88F;
  132.  
  133. {  Temporary Memory routines renamed, but obsolete, in System 7.0 and later.  }
  134. PROCEDURE TempHLock(h: Handle;VAR resultCode: OSErr);
  135.  INLINE $3F3C,$001E,$A88F;
  136. PROCEDURE TempHUnlock(h: Handle;VAR resultCode: OSErr);
  137.  INLINE $3F3C,$001F,$A88F;
  138. PROCEDURE TempDisposeHandle(h: Handle;VAR resultCode: OSErr);
  139.  INLINE $3F3C,$0020,$A88F;
  140. FUNCTION TempTopMem: Ptr;
  141.  INLINE $3F3C,$0016,$A88F;
  142.  
  143. {  Temporary Memory routines as they were known before System 7.0.  }
  144. FUNCTION MFMaxMem(VAR grow: Size): Size;
  145.  INLINE $3F3C,$0015,$A88F;
  146. FUNCTION MFFreeMem: LONGINT;
  147.  INLINE $3F3C,$0018,$A88F;
  148. FUNCTION MFTempNewHandle(logicalSize: Size;VAR resultCode: OSErr): Handle;
  149.  INLINE $3F3C,$001D,$A88F;
  150. PROCEDURE MFTempHLock(h: Handle;VAR resultCode: OSErr);
  151.  INLINE $3F3C,$001E,$A88F;
  152. PROCEDURE MFTempHUnlock(h: Handle;VAR resultCode: OSErr);
  153.  INLINE $3F3C,$001F,$A88F;
  154. PROCEDURE MFTempDisposHandle(h: Handle;VAR resultCode: OSErr);
  155.  INLINE $3F3C,$0020,$A88F;
  156. FUNCTION MFTopMem: Ptr;
  157.  INLINE $3F3C,$0016,$A88F;
  158. PROCEDURE InitApplZone;
  159.  INLINE $A02C;
  160. PROCEDURE InitZone(pgrowZone: ProcPtr;cmoreMasters: INTEGER;limitPtr: UNIV Ptr;
  161.  startPtr: UNIV Ptr);
  162. PROCEDURE SetZone(hz: THz);
  163.  INLINE $205F,$A01B;
  164. FUNCTION CompactMem(cbNeeded: Size): Size;
  165. FUNCTION CompactMemSys(cbNeeded: Size): Size;
  166. PROCEDURE PurgeMem(cbNeeded: Size);
  167.  INLINE $201F,$A04D;
  168. PROCEDURE PurgeMemSys(cbNeeded: Size);
  169.  INLINE $201F,$A44D;
  170. FUNCTION FreeMem: LONGINT;
  171.  INLINE $A01C,$2E80;
  172. FUNCTION FreeMemSys: LONGINT;
  173.  INLINE $A41C,$2E80;
  174. PROCEDURE ResrvMem(cbNeeded: Size);
  175.  INLINE $201F,$A040;
  176. PROCEDURE ReserveMem(cbNeeded: Size);
  177.  INLINE $201F,$A040;
  178. PROCEDURE ReserveMemSys(cbNeeded: Size);
  179.  INLINE $201F,$A440;
  180. FUNCTION MaxMem(VAR grow: Size): Size;
  181. FUNCTION MaxMemSys(VAR grow: Size): Size;
  182. PROCEDURE SetGrowZone(growZone: ProcPtr);
  183.  INLINE $205F,$A04B;
  184. PROCEDURE SetApplLimit(zoneLimit: UNIV Ptr);
  185.  INLINE $205F,$A02D;
  186. PROCEDURE MoveHHi(h: Handle);
  187.  INLINE $205F,$A064;
  188. PROCEDURE DisposPtr(p: Ptr);
  189.  INLINE $205F,$A01F;
  190. PROCEDURE DisposePtr(p: Ptr);
  191.  INLINE $205F,$A01F;
  192. FUNCTION GetPtrSize(p: Ptr): Size;
  193. PROCEDURE SetPtrSize(p: Ptr;newSize: Size);
  194. PROCEDURE DisposHandle(h: Handle);
  195.  INLINE $205F,$A023;
  196. PROCEDURE DisposeHandle(h: Handle);
  197.  INLINE $205F,$A023;
  198. FUNCTION GetHandleSize(h: Handle): Size;
  199. PROCEDURE SetHandleSize(h: Handle;newSize: Size);
  200. PROCEDURE EmptyHandle(h: Handle);
  201.  INLINE $205F,$A02B;
  202. PROCEDURE ReallocHandle(h: Handle;byteCount: Size);
  203. PROCEDURE ReallocateHandle(h: Handle;byteCount: Size);
  204. PROCEDURE HSetRBit(h: Handle);
  205.  INLINE $205F,$A067;
  206. PROCEDURE HClrRBit(h: Handle);
  207.  INLINE $205F,$A068;
  208. PROCEDURE MoreMasters;
  209.  INLINE $A036;
  210. PROCEDURE BlockMove(srcPtr: UNIV Ptr;destPtr: UNIV Ptr;byteCount: Size);
  211. FUNCTION MemError: OSErr;
  212.  INLINE $3EB8,$0220;
  213. PROCEDURE PurgeSpace(VAR total: LONGINT;VAR contig: LONGINT);
  214. FUNCTION HGetState(h: Handle): SignedByte;
  215. PROCEDURE HSetState(h: Handle;flags: SignedByte);
  216. PROCEDURE SetApplBase(startPtr: UNIV Ptr);
  217.  INLINE $205F,$A057;
  218. PROCEDURE MaxApplZone;
  219.  INLINE $A063;
  220. FUNCTION HoldMemory(address: UNIV Ptr;count: LONGINT): OSErr;
  221. FUNCTION UnholdMemory(address: UNIV Ptr;count: LONGINT): OSErr;
  222. FUNCTION LockMemory(address: UNIV Ptr;count: LONGINT): OSErr;
  223. FUNCTION LockMemoryContiguous(address: UNIV Ptr;count: LONGINT): OSErr;
  224. FUNCTION UnlockMemory(address: UNIV Ptr;count: LONGINT): OSErr;
  225. FUNCTION GetPhysical(VAR addresses: LogicalToPhysicalTable;VAR physicalEntryCount: LONGINT): OSErr;
  226. FUNCTION DeferUserFn(userFunction: ProcPtr;argument: UNIV Ptr): OSErr;
  227. FUNCTION DebuggerGetMax: LONGINT;
  228.  INLINE $7000,$A08D,$2E80;
  229. PROCEDURE DebuggerEnter;
  230.  INLINE $7001,$A08D;
  231. PROCEDURE DebuggerExit;
  232.  INLINE $7002,$A08D;
  233. PROCEDURE DebuggerPoll;
  234.  INLINE $7003,$A08D;
  235. FUNCTION GetPageState(address: UNIV Ptr): PageState;
  236.  INLINE $205F,$7004,$A08D,$3E80;
  237. FUNCTION PageFaultFatal: BOOLEAN;
  238.  INLINE $7005,$A08D,$1E80;
  239. FUNCTION DebuggerLockMemory(address: UNIV Ptr;count: LONGINT): OSErr;
  240. FUNCTION DebuggerUnlockMemory(address: UNIV Ptr;count: LONGINT): OSErr;
  241. FUNCTION EnterSupervisorMode: StatusRegisterContents;
  242.  INLINE $7008,$A08D,$3E80;
  243.  
  244.  
  245. {$ENDC} { UsingMemory }
  246.  
  247. {$IFC NOT UsingIncludes}
  248.  END.
  249. {$ENDC}
  250.  
  251.